package com.hspedu.newData.dmsxl.滑动窗口;

import org.junit.Test;

/**
 * @Author: yh
 * @description: 
 * @CreateTime: 2025-05-04 
 * @Version: 1.0
 */

// todo
public class LC53最大子数组和 {

    // todo
    // 滑动窗口
    public int maxSubArray(int[] nums) {
        return 1;
    }

    // 前缀和
    // todo 还得学习一下
    public int maxSubArray1(int[] nums) {

        int len = nums.length;
        int[] arr = new int[len + 1];
        arr[0] = 0;
        for (int i = 1; i < len + 1; i++) {
            arr[i] = arr[i-1] + nums[i-1];
        }

        int min = 0;
        int max = arr[1] < 0 ? arr[1] : arr[0];
        for (int i = 1; i < arr.length; i++) {
            if (arr[i] < min){
                min = arr[i];
                if (max<0){
                    max = Math.max(arr[i] - arr[i-1],max);
                }
            }else if (arr[i] - min > max){
                max = arr[i] - min;
            }
        }
        return max;
    }


    @Test
    public void test() {
        // 测试代码

        maxSubArray1(new int[]{-1,-1});
    }
}
